package com.dagger.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean;

/**
 * websocket配置
 * @author dagger
 *
 */
@Configuration
public class WebSocketConfig {
	@Value("${websocket.maxTextMessageBufferSize}")
	private int maxTextMessageBufferSize;
	@Value("${websocket.maxBinaryMessageBufferSize}")
	private int maxBinaryMessageBufferSize;

	/**
	 * 会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint 要注意，如果使用独立的servlet容器，
	 * 而不是直接使用springboot的内置容器， 就不要注入ServerEndpointExporter，因为它将由容器自己提供和管理。
	 */
	@Bean
	public ServerEndpointExporter serverEndpointExporter() {
		return new ServerEndpointExporter();
	}

	@Bean
	public ServletServerContainerFactoryBean createWebSocketContainer() {
		ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
		// ws 传输数据的时候，数据过大有时候会接收不到，所以在此处设置bufferSize
		container.setMaxTextMessageBufferSize(maxTextMessageBufferSize);
		container.setMaxBinaryMessageBufferSize(maxBinaryMessageBufferSize);
//        container.setMaxSessionIdleTimeout(15 * 60000L);
		return container;
	}
}
